

#import "NSMCharacterManager.h"

@implementation NSMCharacterManager

+ (NSString *)chineseToPinYin:(NSString *)chinese
{
    if (chinese.length) {
        /**
         Boolean CFStringTransform(CFMutableStringRef string, CFRange *range, CFStringRef transform, Boolean reverse) 返回值为BOOL类型,可判断是否转换成功
         
         @parameter string 要转换的中文,同时它是可变的。因此也直接作为最终转换后的字符串
         @parameter range 要转换的范围,同时输出转换后改变的范围。如果为NULL,视为全部转换
         @parameter transform 指定要进行什么样的转换,这里可以指定多种语言的拼写转换
         @parameter reverse 指定是否必须是可逆向转换的。如果转换成功就返回true,否则false
         
         __bridge ARC下类型转换
         */
        
        NSMutableString *mutableStr = [NSMutableString stringWithString:chinese];
        // 1.转换成带声调的
        CFStringTransform((__bridge CFMutableStringRef)mutableStr,
                          0,
                          kCFStringTransformMandarinLatin,
                          NO);
        // 2.去掉声调
        CFStringTransform((__bridge CFMutableStringRef)mutableStr,
                          0,
                          kCFStringTransformStripDiacritics,
                          NO);
        return mutableStr;
    } else {
        return @"";
    }
}

@end
